Methods, systems, and computer program products for assessing a macroblock candidate for conversion to a skipped macroblock

ABSTRACT

A sequence of encoded data associated with a block of video is assessed to determine if: quantized coefficients of transformed residual pixel data associated with the block are equal to zero, the block was encoded using a temporal compression process, a slice that includes the block is configured to be encoded using only one reference picture list or two reference picture lists, the block is unpartitioned or was encoded in direct mode, a reference picture used to encode the block is the reference picture associated with a lowest index value on the one reference picture list, and an actual motion vector associated with the block is equal to a predicted motion vector associated with the block.

BACKGROUND

Video is the technology of electronically capturing, recording,processing, storing, transmitting, and reconstructing a sequence ofimages that collectively represent a scene in motion. The substantialamount of original data needed to represent images in video may tax thecapacity of currently available data storage devices. Furthermore, atcurrently available rates of data transmission, the substantial amountof original data needed to represent images in video may hinder theability of a receiver to process received original data at a ratesufficiently fast enough to present, contemporaneously, the frames at arate sufficiently fast enough to produce an illusion of continuity tothe human eye.

Video compression processes may reduce the amount of original dataneeded to represent images in video by identifying instances in whichthe same or similar values of data are included at different locationsin the bitstream and replacing the data in at least some of theselocations with binary codes that identify the redundancy. Because thebinary codes may use fewer bits than the values of the original data,the number of bits in the bitstream may be reduced.

In order to reduce the number of bits in the bitstream, some technicalstandards for video compression may provide for default processes to beperformed by decoders compliant with the technical standard in theabsence of binary codes directing different processes. Sometimes it maybe possible to include in the bitstream a binary code that indicatesthat all other data associated with a block of video have been excludedfrom the bitstream.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

FIG. 1 illustrates an example of a frame of a captured image.

FIG. 2 illustrates an example of two consecutive frames in a sequence.

FIG. 3 is a block diagram of an example of a video encoder.

FIGS. 4 and 7 illustrate examples of residual frames.

FIGS. 5 and 6 illustrate examples of frames divided into square blocks.

FIG. 8 illustrates an example of an arrangement of I, B, and P frames ina sequence.

FIGS. 9 and 10 illustrate examples of frames divided into slices.

FIGS. 11 and 14 are process flowcharts of example methods for assessinga sequence of encoded data associated with a block of video, accordingto embodiments.

FIGS. 12 and 15 are block diagrams of example systems for assessing asequence of encoded data associated with a block of video, according toembodiments.

FIGS. 13 and 16 are block diagrams of examples of software or firmwareembodiments of, respectively, systems 1200 and 1500, according toembodiments.

In the drawings, the leftmost digit(s) of a reference number identifiesthe drawing in which the reference number first appears.

DETAILED DESCRIPTION

An embodiment is now described with reference to the figures, where likereference numbers indicate identical or functionally similar elements.While specific configurations and arrangements are discussed, it shouldbe understood that this is done for illustrative purposes only. A personskilled in the relevant art will recognize that other configurations andarrangements can be used without departing from the spirit and scope ofthe description. It will be apparent to a person skilled in the relevantart that this can also be employed in a variety of other systems andapplications other than what is described herein.

Disclosed herein are methods, systems, and computer program products toassess a block candidate for conversion to a skipped block.

Video is the technology of electronically capturing, recording,processing, storing, transmitting, and reconstructing a sequence ofimages that collectively represent a scene in motion. A captured imagein the sequence may be known as a frame. If the rate at which the framesare presented is sufficiently fast, for example, at least 24 frames persecond, then the human eye may perceive an illusion of continuity fromthe presentation of one frame to the next.

Historically, in the early development of television technology whenframe rates were sufficiently slow, a flicker may appear when video waspresented. To compensate for this flicker, the frame was divided intotwo alternate rows of fields, every odd row belonging to a first fieldand every even row belonging to a second field. Each field could bepresented at a faster frame rate and the result may reduce theappearance of the flicker. As video technology has continued to evolveand build upon past designs, fields have remained a part of thetechnology. However, they are treated in the same manner as frames.Accordingly, processes performed upon frames, as described below, maysimilarly be performed upon fields and the terms frame and field may beused interchangeably.

FIG. 1 illustrates an example of a frame of a captured image. Thecaptured image shows, for example, a baseball 102 in a sky 104 above afield 106. A frame 100, when captured in a digital form, may berepresented by a two dimensional array of picture elements (or pixels).A pixel 108 may be configured to store data representing a sample of theimage at a location in the image that corresponds to a location of pixel108 in the array. The values of the data may be represented using binarydigits (or bits). The data may include values that correspond to adegree of brightness of pixel 108. Colors may be realized throughcombinations of various proportions of basic colors such as, forexample, red, green, and blue. To include color in the frame, pixel 108may be configured to store data at different channels corresponding tothe basic colors. The data in the video may be organized into a streamof bits (or bitstream), which may be ordered in a manner so that aproperly configured receiver may receive the bitstream and process thedata to present the video.

The substantial amount of original data needed to represent images invideo may tax the capacity of currently available data storage devices.Furthermore, at currently available rates of data transmission, thesubstantial amount of original data needed to represent images in videomay hinder the ability of a receiver to process received original dataat a rate sufficiently fast enough to present, contemporaneously, theframes at a rate sufficiently fast enough to produce an illusion ofcontinuity to the human eye.

Video compression processes may reduce the number of bits needed torepresent images in video. A compressor (or encoder) may be used tocompress (or encode) the original data to produce compressed (orencoded) data for storage or transmission. A receiver may include adecompressor (or decoder) used to decompress (or decode) the compressed(encoded) data to produce reconstructed data. The values of thereconstructed data should be equal to the values of the original data(lossless compression) or the values of the reconstructed data should beequivalent to the values of the original data (lossy compression).

Lossy video compression may be acceptable in certain situations. First,it may be the case that the differences (or distortion) between thevideo produced from the reconstructed data and the video produced fromthe original data are sufficiently small as to be imperceptible to thehuman eye. Second, it may be the case that the differences between thevideo produced from the reconstructed data and the video produced fromthe original data are not sufficiently small as to be imperceptible tothe human eye, but nevertheless acceptable because the video compressionmay reduce the number of bits in the bitstream by an amount sufficientenough to allow the encoded data to be: (1) stored on a given datastorage device or (2) transmitted at a rate sufficiently fast enoughthat a receiver may contemporaneously process the encoded data, mayproduce the reconstructed data, and may present the frames at a ratesufficiently fast enough to produce an illusion of continuity to thehuman eye. This second case may be thought of as a tradeoff that favors,for example, a real-time rate of presentation of a video at the expenseof the fidelity of the images represented in the video.

Video compression processes may reduce the amount of original dataneeded to represent images in video by identifying instances in whichthe same or similar values of data are included at different locationsin the bitstream and replacing the data in at least some of theselocations with binary codes that identify the redundancy. Because thebinary codes user fewer bits than the values of the original data, thenumber of bits in the bitstream may be reduced.

In order for recorders, transmitters, receivers, and other videomachines to be able to interact so that they may properly producebitstreams, process bitstreams, or both, the video industry hasdeveloped technical standards to establish certain configurationrequirements. Among these technical standards is, for example, AdvancedVideo Coding (ITU-T Recommendation H.264 (ISO/IEC 14496 (MPEG-4) Part10)) (or the Advanced Video Coding standard). In addition to otherconcerns, the Advanced Video Coding standard prescribes a format forordering data and binary codes in a bitstream so that the bitstream maybe properly processed by a receiver compliant with the standard.

FIG. 2 illustrates an example of two consecutive frames in a sequence.Earlier frame 100 includes, for example, baseball 102 in sky 104 abovefield 106. A later frame 200 includes, for example, a baseball 202 in asky 204 above a field 206. Pixel 108 in frame 100 may correspond to apixel 208 in frame 200. Because it may be the case that the value of theoriginal data stored in pixel 108 is the same as or similar to the valueof the original data stored in pixel 208, it may be possible to replace,in the bitstream, the values of the original data of pixels 108 and 208with a binary code that uses fewer bits (temporal compression). This maylikely be the case when data stored in pixels 108 and 208 representstationary objects in the images (e.g., skies 104 and 204 and fields 106and 206). Similarly, because it may be the case that the value of theoriginal data stored in pixel 108 is the same as or similar to the valueof the original data stored in a pixel 210 of frame 100, it may bepossible to replace, in the bitstream, the values of the original dataof pixels 108 and 210 with a binary code that uses fewer bits (spatialcompression). This may likely be the case when data stored in pixels 108and 208 represent a homogenous object in the image (e.g., sky 104 andfield 106). These approaches represent underlying principles of videocompression.

FIG. 3 is a block diagram of an example of a video encoder. In FIG. 3, avideo encoder 300 comprises a motion compensator 302, a first summer304, a transformer 306, a quantizer 308, an entropy encoder 310, ascaler 312, an inverse transformer 314, a second summer 316, and abuffer 318. Video encoder 300 may be configured to receive originalpixel data 320 and to produce an encoded bitstream 322.

In order to understand the functions of the components of video encoder300, it may be helpful to explain a theory underlying a common method inwhich the same or similar data spatially distributed at differentlocations of a frame may be compressed. Referring to FIGS. 1 and 3,original pixel data 320 of frame 100 may conceptually be presented in aMatrix I as follows:

$\begin{matrix}I \\\begin{bmatrix}B & B & B & B & B \\B & W & B & B & B \\B & B & B & B & B \\G & G & G & G & G\end{bmatrix}\end{matrix}$

Where B may correspond to the value for data that represent blue in apixel, W may correspond to the value for data that represent white in apixel, and G may correspond to the value for data that represent greenin a pixel. Matrix I may generally represent frame 100 as rows of bluepixels for sky 104, a row of green pixels for field 106, and an elementof white pixels for baseball 102. The values in Matrix I may be afunction of distance along a horizontal axis and a vertical axis. Theymay be presented in the distance domain.

Video compression processes may take advantage of the teachings ofJoseph Fourier, who demonstrated that any original function that may beperiodic in an original domain may be expressed as a sum of elements ina set of sinusoidal functions. Each element in the set of sinusoidalfunctions may have its own frequency, phase shift, and coefficient. Inthis manner, the sum of the elements in the set of sinusoidal functions:(1) may replicate the shape of the original function and (2) may allowthe original function to be expressed in a frequency domain.

Additionally, for the purpose of exploiting the teachings of Fourier,any original random function having a finite interval may be expressedas a periodic function simply by repeating the original random function.For example, in Matrix I, the original random function of the secondrow, B W B B B, may be expressed as a periodic function, B W B B B B W BB B B W B B B.

In comparing Matrix I with FIG. 1, for example, the occurrence of thevalue for the blue pixels across the rows may generally be viewed asunvarying in the horizontal direction, as illustrated at a graph 110.The occurrence of the value for the green pixels across the rows maygenerally be viewed as varying at a high frequency in the horizontaldirection, as illustrated at a graph 112, which peaks at numerous pointsthat may correspond to the locations of the blades of grass of field 106in frame 100. The occurrence of the value for the white pixels acrossthe rows may generally be viewed as varying at a low frequency in thehorizontal direction, as illustrated at a graph 114, which peaks at apoint that may correspond to the location of baseball 102 in frame 100.A similar analysis may be done for the columns. For example, theoccurrence of the value for the blue pixels down the columns maygenerally be viewed as unvarying in the vertical direction asillustrated at a graph 116. The occurrence of the value for the whitepixels down the columns may generally be viewed as varying at a lowfrequency in the vertical direction, as illustrated at a graph 118,which peaks at a point that may correspond to the location of baseball102 in frame 100. The occurrence of the value for the green pixels downthe columns may generally be viewed as varying at a low frequency in thevertical direction, as illustrated at a graph 120, which peaks at apoint that may correspond to the location of field 106 in frame 100.

Mathematicians have further developed the teachings of Fourier todevelop functions to transform an original function that may be periodicin an original domain to a corresponding function that may be expressedin the frequency domain. Such transform functions also havecorresponding inverse transform functions to transform the functionexpressed in the frequency domain back to the original function. Amongthe transform functions that have been developed to be used when theoriginal function comprises a set of discrete samples may be, forexample, the various forms of the Discrete Cosine Transform. Transformfunctions for sets of discrete samples may be expressed in matriceshaving an equal number of rows and columns so that, usually, the crossproduct of the transform function and its inverse transform function maybe the identity matrix, a square matrix in which the value of each ofthe elements diagonally from the top, left corner to the bottom, rightcorner may be one and the value of each of the other elements may bezero.

Because transform functions for sets of discrete samples may beexpressed in matrices having an equal number of rows and columns andbecause the cross product of the transform function and its inversetransform function may usually be the identity matrix, such a transformfunction should operate on a matrix that has the same number of rows andcolumns as the transform function. In a situation where an image has anunequal number of rows and columns, such as, for example, the imagerepresented by Matrix I, the last row or the last column may bereplicated until there are an equal number of rows and columns. Forexample, Matrix I may be modified to produce a Matrix I⁺ as follow:

$\begin{matrix}I^{+} \\\begin{bmatrix}B & B & B & B & B \\B & W & B & B & B \\B & B & B & B & B \\G & G & G & G & G \\G & G & G & G & G\end{bmatrix}\end{matrix}$

The results of performing a transform using a Matrix II operating onMatrix I⁺ may be presented in a Matrix III as follows:

${\begin{matrix}I^{+} \\\begin{bmatrix}B & B & B & B & B \\B & W & B & B & B \\B & B & B & B & B \\G & G & G & G & G \\G & G & G & G & G\end{bmatrix}\end{matrix} \times \begin{matrix}{II} \\\begin{bmatrix}T_{11} & T_{12} & T_{13} & T_{14} & T_{15} \\T_{21} & T_{22} & T_{23} & T_{24} & T_{25} \\T_{31} & T_{32} & T_{33} & T_{34} & T_{35} \\T_{41} & T_{42} & T_{43} & T_{44} & T_{45} \\T_{51} & T_{52} & T_{53} & T_{54} & T_{55}\end{bmatrix}\end{matrix}} = \begin{matrix}{III} \\\begin{bmatrix}V & M & S & S & M \\L & S & S & S & S \\S & S & S & S & S \\S & S & S & S & S \\S & S & S & S & S\end{bmatrix}\end{matrix}$

Matrix III may be produced by transformer 306, for example, and thevalues of the elements of Matrix III may be included in bitstream 322.The values of the elements of Matrix III are referred to ascoefficients.

Conversely, the results of performing an inverse transform using aMatrix IV operating on Matrix III may be presented in Matrix I⁺reproduced as follows:

${\begin{matrix}{III} \\\begin{bmatrix}V & M & S & S & M \\L & S & S & S & S \\S & S & S & S & S \\S & S & S & S & S \\S & S & S & S & S\end{bmatrix}\end{matrix} \times \begin{matrix}{IV} \\\begin{bmatrix}I_{11} & I_{12} & I_{13} & I_{14} & I_{15} \\I_{21} & I_{22} & I_{23} & I_{24} & I_{25} \\I_{31} & I_{32} & I_{33} & I_{34} & I_{35} \\I_{41} & I_{42} & I_{43} & I_{44} & I_{45} \\I_{51} & I_{52} & I_{53} & I_{54} & I_{55}\end{bmatrix}\end{matrix}} = \begin{matrix}I^{+} \\\begin{bmatrix}B & B & B & B & B \\B & W & B & B & B \\B & B & B & B & B \\G & G & G & G & G \\G & G & G & G & G\end{bmatrix}\end{matrix}$

A decoder receiving the coefficients of Matrix III in bitstream 322 mayuse Matrix IV to reproduce Matrix I⁺.

In Matrix III, V may represent a very large value, L may represent alarge value, M may represent a medium value, and S may represent a smallvalue. The coefficient in the top, left corner of Matrix III maycorrespond to the weighted value of pixels in frame 100 whose valuesgenerally do not vary in both the horizontal and vertical directions.From left to right in the rows of Matrix III, each coefficient maycorrespond to the weighted value of pixels in frame 100 whose valuesvary in the horizontal direction. The further to the right a coefficientis in the rows of Matrix III, the greater the frequency of variation inthe horizontal direction may be. From top to bottom in the columns ofMatrix III, each coefficient may correspond to the weighted value ofpixels in frame 100 whose values vary in the vertical direction. Thefurther down a coefficient is in the columns of Matrix III, the greaterthe frequency of variation in the vertical direction may be.

For example, the very large value of the coefficient in the top, leftcorner of Matrix III may correspond to the weighted values of the bluepixels that may correspond to the location of sky 104 in frame 100 whosevalues generally do not vary in both the horizontal and verticaldirections. The middle value of the coefficient in the first row, secondto the right from the top, left corner of Matrix III may, for example,correspond to the weighted values of the white pixels that maycorrespond to the location of baseball 102 in frame 100 whose values mayvary at a low frequency in the horizontal direction. The large value ofthe coefficient in the first column, second down from the top, leftcorner of Matrix III may, for example, correspond to the weighted valuesof the white pixels that may correspond to the location of baseball 102in frame 100 and the weighted values of the green pixels that maycorrespond to the location of field 106 in frame 100 both of whosevalues may vary at a low frequency in the vertical direction. The middlevalue of the coefficient in the top, right corner of Matrix III may, forexample, correspond to the weighted values of the green pixels that maycorrespond to the locations of the blades of grass of field 106 in frame100 whose values may vary at a high frequency in the horizontaldirection.

Note that, unlike Matrix I⁺, where significant information may beincluded in the values of all of the elements, in Matrix III most of theinformation may be included in the values of just a few of thecoefficients. One of the ways in which video compression processes mayreduce the number of bits needed to represent images in video may be byeliminating those bits whose values do not contain a significant amountof information.

For example, if in Matrix III the value of X is 9.7, the value of L is6.1, the value of M is 4.6, and the value of S is 1.2, then athresholding process applied to the coefficients in Matrix III may resetthe values of all coefficients having values less than 2.0 to 0 toproduce a Matrix III′ as follows:

$\begin{matrix}{III}^{\prime} \\\begin{bmatrix}9.7 & 4.6 & 0 & 0 & 4.6 \\6.1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix}$

In ordering the coefficients of Matrix III′ into bitstream 322, entropyencoder 310, for example, may replace series of instances in which thevalues are zero with a binary code, thereby reducing the number of bitsin bitstream 322. A decoder receiving the coefficients of Matrix III′ inbitstream 322 may use Matrix IV to produce a Matrix I⁺′ as follows:

${\begin{matrix}{III}^{\prime} \\\begin{bmatrix}9.7 & 4.6 & 0 & 0 & 4.6 \\6.1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix} \times \begin{matrix}{IV} \\\begin{bmatrix}I_{11} & I_{12} & I_{13} & I_{14} & I_{15} \\I_{21} & I_{22} & I_{23} & I_{24} & I_{25} \\I_{31} & I_{32} & I_{33} & I_{34} & I_{35} \\I_{41} & I_{42} & I_{43} & I_{44} & I_{45} \\I_{51} & I_{52} & I_{53} & I_{54} & I_{55}\end{bmatrix}\end{matrix}} = \begin{matrix}I^{+ \prime} \\\begin{bmatrix}B^{\prime} & B^{\prime} & B^{\prime} & B^{\prime} & B^{\prime} \\B^{\prime} & W^{\prime} & B^{\prime} & B^{\prime} & B^{\prime} \\B^{\prime} & B^{\prime} & B^{\prime} & B^{\prime} & B^{\prime} \\G^{\prime} & G^{\prime} & G^{\prime} & G^{\prime} & G^{\prime} \\G^{\prime} & G^{\prime} & G^{\prime} & G^{\prime} & G^{\prime}\end{bmatrix}\end{matrix}$

To the extent that the value of B′ in Matrix I⁺′ may not equal the valueof B in Matrix I⁺, the value of W′ in Matrix I⁺′ may not equal the valueof W in Matrix I⁺, or the value of G′ in Matrix I⁺′ may not equal thevalue of G in Matrix I⁺, distortion in the video produced using MatrixI⁺′ and introduced as a result of using Matrix III′ instead of MatrixIII may be thought of as a tradeoff that favors a short bitstream at theexpense of the fidelity of the images represented in the video.

In another example, the coefficients in Matrix III may be quantized. Forexample, an eight-step quantizer (quantizer 308, for example) may assignquantized values for the coefficients of Matrix III as follows:0≦coefficients<1.25 are assigned a quantized value of 0,1.25≦coefficients<2.5 are assigned a quantized value of 1,2.5≦coefficients<3.75 are assigned a quantized value of 2,3.75≦coefficients<5 are assigned a quantized value of 3,5≦coefficients<6.25 are assigned a quantized value of 4,6.25≦coefficients<7.5 are assigned a quantized value of 5,7.5≦coefficients<8.75 are assigned a quantized value of 6, and8.75≦coefficients<10 are assigned a quantized value of 7. Using such aneight-step quantizer, Matrix III may be modified to produce a MatrixIII″ as follows:

$\begin{matrix}{III}^{''} \\\begin{bmatrix}7 & 3 & 0 & 0 & 3 \\4 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix}$

In ordering the coefficients of Matrix III″ into bitstream 322, entropyencoder 310, for example, may replace series of instances in which thevalues are zero with a binary code, thereby reducing the number of bitsin bitstream 322. A decoder receiving the coefficients of Matrix III″ inbitstream 322 may use Matrix IV to produce a Matrix I⁺″ as follows:

${\begin{matrix}{III}^{''} \\\begin{bmatrix}7 & 3 & 0 & 0 & 3 \\4 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix} \times \begin{matrix}{IV} \\\begin{bmatrix}I_{11} & I_{12} & I_{13} & I_{14} & I_{15} \\I_{21} & I_{22} & I_{23} & I_{24} & I_{25} \\I_{31} & I_{32} & I_{33} & I_{34} & I_{35} \\I_{41} & I_{42} & I_{43} & I_{44} & I_{45} \\I_{51} & I_{52} & I_{53} & I_{54} & I_{55}\end{bmatrix}\end{matrix}} = \begin{matrix}I^{+ ''} \\\begin{bmatrix}B^{''} & B^{''} & B^{''} & B^{''} & B^{''} \\B^{''} & W^{''} & B^{''} & B^{''} & B^{''} \\B^{''} & B^{''} & B^{''} & B^{''} & B^{''} \\G^{''} & G^{''} & G^{''} & G^{''} & G^{''} \\G^{''} & G^{''} & G^{''} & G^{''} & G^{''}\end{bmatrix}\end{matrix}$

Again, to the extent that the value of B″ in Matrix I⁺″ may not equalthe value of B in Matrix I⁺, the value of W″ in Matrix I⁺″ may not equalthe value of W in Matrix I⁺, or the value of G″ in Matrix I⁺″ may notequal the value of G in Matrix I⁺, distortion in the video producedusing Matrix I⁺″ and introduced as a result of using Matrix III″ insteadof Matrix III may be thought of as a tradeoff that favors a shortbitstream at the expense of the fidelity of the images represented inthe video.

If, for example, a two-step quantizer is used to quantize thecoefficients in Matrix III, such a two-step quantizer (quantizer 308,for example) may assign quantized values for the coefficients of MatrixIII as follows: 0≦coefficients<5 are assigned a quantized value of 0,and 5≦coefficients≦10 are assigned a quantized value of 1. Using such atwo-step quantizer, Matrix III may be modified to produce a Matrix III′″as follows:

$\begin{matrix}{III}^{\prime\prime\prime} \\\begin{bmatrix}1 & 0 & 0 & 0 & 0 \\1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix}$

In ordering the coefficients of Matrix III′″ into bitstream 322, entropyencoder 310, for example, may replace series of instances in which thevalues are zero with a binary code, thereby reducing the number of bitsin bitstream 322. A decoder receiving the coefficients of Matrix III′″in bitstream 322 may use Matrix IV to produce a Matrix I⁺′″ as follows:

${\begin{matrix}{III}^{\prime\prime\prime} \\\begin{bmatrix}1 & 0 & 0 & 0 & 0 \\1 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0 \\0 & 0 & 0 & 0 & 0\end{bmatrix}\end{matrix} \times \begin{matrix}{IV} \\\begin{bmatrix}I_{11} & I_{12} & I_{13} & I_{14} & I_{15} \\I_{21} & I_{22} & I_{23} & I_{24} & I_{25} \\I_{31} & I_{32} & I_{33} & I_{34} & I_{35} \\I_{41} & I_{42} & I_{43} & I_{44} & I_{45} \\I_{51} & I_{52} & I_{53} & I_{54} & I_{55}\end{bmatrix}\end{matrix}} = \begin{matrix}I^{+ {\prime\prime\prime}} \\\begin{bmatrix}B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} \\B^{\prime\prime\prime} & W^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} \\B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} & B^{\prime\prime\prime} \\G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime} \\G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime} & G^{\prime\prime\prime}\end{bmatrix}\end{matrix}$

Again, to the extent that the value of B′″ in Matrix I⁺′″ may not equalthe value of B in Matrix I⁺, the value of W′″ in Matrix I⁺′″ may notequal the value of W in Matrix I⁺, or the value of G′″ in Matrix I⁺′″may not equal the value of G in Matrix I⁺, distortion in the videoproduced using Matrix I⁺′″ and introduced as a result of using MatrixIII′″ instead of Matrix III may be thought of as a tradeoff that favorsa short bitstream at the expense of the fidelity of the imagesrepresented in the video.

Furthermore, a comparison between Matrix III″ and Matrix III′″ mayillustrate the tradeoff between using, for example, an eight-stepquantizer and a two-step quantizer. Matrix III′″ may have greater numberof instances in which the coefficients are zero. Additionally, in MatrixIII′″, fewer values (and hence a fewer number of bits) may be used inthe instances of non-zero coefficients. Therefore, a bitstream producedusing Matrix III′″ may be shorter than a bitstream produced using MatrixIII′″. However, because the difference between the coefficients ofMatrix III′″ and Matrix III may be greater than the difference betweenthe coefficients of Matrix III′″ and Matrix III, a video produced usingMatrix III′″ may have a greater degree of distortion than a videoproduced using Matrix III″.

In addition to processes in which the same or similar data spatiallydistributed at different locations of a frame may be compressed, videocompression processes also identify instances in which the same orsimilar values of data may be temporally distributed at correspondinglocations of different frames and may replace the data in at least someof these locations with binary codes that identify the redundancy.Because the binary codes may use fewer bits than the original data, thenumber of bits in the bitstream may be reduced.

A common method to compress the same or similar data that may betemporally distributed at corresponding locations of different framesmay involve subtracting a previous frame from a current frame to producea residual frame. FIG. 4 illustrates an example of a residual frame. Aresidual frame 400, for example, may be the difference of subtractingprevious frame 100 from current frame 200. Residual frame 400 may beproduced by first summer 304, for example. In residual frame 400, datastored in the pixels that may represent stationary objects in the imageof previous frame 100 (e.g., sky 104 and field 106) may cancel datastored in the pixels that may represent stationary objects in the imageof current frame 200 (e.g., sky 204 and field 206). In these situationsit may be possible to replace at least some of the data stored in thepixels that may represent stationary objects in the image of currentframe 200 with binary codes that identify that the at least some of thedata may be redundant with corresponding data stored in the pixels thatmay represent stationary objects in the image of previous frame 100.This method, however, may be ineffective for data stored in the pixelsthat may represent objects located at one position in previous frame 100and at another position in current frame 200. Note that residual frame400 includes both baseball 102 from previous frame 100 and baseball 202from current frame 200.

This problem may be addressed by: (1) dividing each of previous frame100 and current frame 200 into square blocks of pixels, (2) comparing,for corresponding blocks, the values of the pixel data to determine ifan object may be located at one position in previous frame 100 and atanother position in current frame 200, (3) if it has been determinedthat the object has changed locations, searching the values of the pixeldata in previous frame 100 with the values of the pixel data of theblock in current frame 200 that may include the object to identify anoptimal match, and (4) if an optimal match has been found, determining amagnitude and a direction for a motion vector that may represent thechange in location of the object from previous frame 100 to currentframe 200.

FIGS. 5 and 6 illustrate examples of frames divided into square blocks.Some technical standards for video compression may use square blocks of64 pixels. Other sizes may also be used. Other technical standards mayuse square blocks of 256 pixels and refer to these as macroblocks.Accordingly, processes performed upon blocks, as described below, maysimilarly be performed upon macroblocks and the terms block andmacroblock may be used interchangeably. In FIG. 5, previous frame 100may be divided into square blocks; in FIG. 6, current frame 200 may bedivided into square blocks.

First, for corresponding blocks, the values of the pixel data may becompared. Such comparisons may be performed by motion compensator 302,for example. A block 502 may be compared with a block 602, a block 504may be compared with a block 604, etc. With the exception of thecomparisons between blocks 504 and 604 and between blocks 512 and 612,the other comparisons may demonstrate that the objects in the blockshave remained in the same locations.

Next, because the comparison between blocks 504 and 604 may indicatethat the location of baseball 102 in previous frame 100 is differentfrom the location of baseball 202 in current frame 200, the values ofthe pixel data in previous frame 100 may be searched to identify anoptimal match with the values of the pixel data of block 604 in currentframe 200. Such searches may be performed by motion compensator 302, forexample. The search of the values of the pixel data in previous frame100 may be constrained to a search area 542. Boundaries of search area542 may be defined as a specific number of bits offset from each of theboundaries of block 504. (If an optimal match is not found within searcharea 542, then frame 200 may be encoded without compensating for thechange in the location of baseball 202.) Alternatively, all of thevalues of the pixel data in previous frame 100 may be searched toidentify an optimal match with the values of the pixel data of block 604in current frame 200. In FIG. 5, for example, an optimal match may befound with a set of pixels identified as a block 604′.

Finally, a magnitude and a direction for an actual motion vector thatmay represent the change in the location of the object from previousframe 100 to current frame 200 may be determined. Such a determinationmay be performed by motion compensator 302, for example. This may beaccomplished by determining the differences between the locations ofpixels of corresponding corners of blocks 504 and 604′. For example, thehorizontal coordinate of the pixel at the top, left corner of block 604′may be subtracted from the horizontal coordinate of the pixel at thetop, left corner of block 504 to produce the horizontal component of theactual motion vector, and the vertical coordinate of the pixel at thetop, left corner of block 604′ may be subtracted from the verticalcoordinate of the pixel at the top, left corner of block 504 to producethe vertical component of the actual motion vector.

If, alternatively, all of the values of the pixel data in previous frame100 are searched to identify an optimal match with the values of thepixel data of block 604 in current frame 200, then if the magnitude ofthe actual motion vector is sufficiently large, frame 200 may be encodedwithout compensating for the change in the location of baseball 202.

Using the actual motion vector, a prediction of current frame 200 may beproduced from previous frame 100 by shifting baseball 102 from itslocation in frame 100 to the location of baseball 202 in frame 200.Subtracting the prediction of current frame 200 from actual currentframe 200 produces a residual frame. FIG. 7 illustrates an example ofsuch a residual frame. A residual frame 700 may be produced by firstsummer 304, for example. Because the prediction of current frame 200 hasshifted baseball 102 from its location in frame 100 to the location ofbaseball 202 in frame 200, most of the data stored in the pixels of theprediction of current frame 200 may cancel data stored in the pixels ofactual current frame 200. Note that residual frame 700, for example,only includes seams 742 of baseball 102 shifted from their location inframe 100 to the location of baseball 202 in frame 200 and seams 744 ofbaseball 202 in their location in frame 200. Shifting the location ofbaseball 102 from its location in frame 100 to the location of baseball202 in frame 200 may not account for the change in the position of theseams of baseball 202 in frame 200 from the position of the seams ofbaseball 102 in frame 100. Nevertheless, residual frame 700 mayrepresent a substantial compression of the same or similar data that maybe temporally distributed at corresponding locations of differentframes.

Now to explain, with reference to FIGS. 3 and 7, how video encoder 300may combine the techniques of temporal compression and spatialcompression described above. Assuming that motion compensator 302 mayhave access to an initial previous frame 100, which is known as areference picture, motion compensator 302 may receive original pixeldata 320 for current frame 200 and may perform the processes describedabove to produce a prediction 324 for current frame 200 and, possibly,an actual motion vector 326. If actual motion vector 326 is produced andits magnitude is sufficiently small, then motion compensator 302 maytransmit actual motion vector 326 to entropy encoder 310.

First summer 304 may receive original pixel data 320 and prediction 324and may subtract prediction 324 from original pixel data 320 to produceresidual frame 700. First summer 304 may transmit residual frame 700 totransformer 306.

Rather than spatially compress residual frame 700 as a whole, asdescribed above, transformer 306 may spatially compresses each of theblocks of residual frame 700 independently. Because the values of thepixel data for all of the blocks of residual frame 700, except for ablock 704, may be zero, the coefficients produced by transformer 306 forall of these blocks may also be zero. Moreover, because block 704 hasonly a small amount of pixel data, most of the coefficients produced bytransformer 306 for block 704 may also be zero. Indeed, depending uponthe number of steps used by quantizer 308, as described above, it may bethe case that all of the quantized values for the coefficients for block704 may be assigned to zero. The number of steps used by quantizer 308also may determine the amount of distortion that may be introduced intobitstream 322. If the distortion is sufficiently large, it may be thecase that the video produced from the reconstructed data may notinclude, for example, seams 742 and 744.

Quantizer 308 may transmit quantized coefficients 328 to entropy encoder310. Entropy encoder 310 may receive quantized coefficients 328 and,possibly, actual motion vector 326 and may produce encoded bitstream322. Entropy encoder 310 may, for example, replace series of instancesin which values are zero with binary codes, thereby reducing the numberof bits in bitstream 322.

Quantizer 308 also may transmit quantized coefficients 328 to scaler312. Scaler 312 and inverse transformer 314 may reverse the processes oftransformer 306 and quantizer 308 to produce reconstructed residualframe 700.

Second summer 316 may receive reconstructed residual frame 700 andprediction 324 and may add prediction 324 to reconstructed residualframe 700 to produce reconstructed pixel data 330 for current frame 200.Second summer 316 may transmit reconstructed pixel data 330 to buffer318. Reconstructed pixel data 330 may be available to motion compensator302 as a new previous frame 100, which, again, is known as a referencepicture. As described above, the number of steps used by quantizer 308and the number of steps used by scaler 312 may determine the amount ofdistortion in the video produced by reconstructed pixel data 330.

Nevertheless, in the manner just described it may be possible tocompress many frames from an initial previous frame 100, particularly ifit may be possible to produce sufficiently accurate actual motionvectors 326 with magnitudes that are sufficiently small.

Additionally, further compression may be realized in bitstream 322 bytransmitting, when possible, difference motion vectors for each of theblocks rather than actual motion vectors for each of the blocks. Just asthe use of residual frame 700 represents a substantial compression ofthe same or similar data that may be temporally distributed atcorresponding locations of different frames, the use of differencemotion vectors may also represent a substantial compression of the sameor similar data that may be temporally distributed at correspondinglocations of different frames. For a block, a difference motion vectormay be the difference between an actual motion vector for the block anda predicted motion vector for the block. Because a difference motionvector may be smaller than an actual motion vector, the differencevector may use fewer bits than the actual motion vector, which mayreduce the number of bits in bitstream 322.

For a current block, a predicted motion vector may be produced from atleast one actual motion vector of at least one previously encoded blockthat is nearby the current block. For example, according to sometechnical standards for video compression, a predicted motion vector fora current block may be a median of: (1) an actual motion vector for ablock immediately to the left of the current block, if available; (2) anactual motion vector for a block immediately above the current block, ifavailable; and (3) an actual motion vector for a block immediately aboveand to the right of the current block. In FIG. 6, for example, apredicted motion vector for a current block 618, for example, may be amedian of: (1) an actual motion vector for block 616; (2) an actualmotion vector for block 608; and (3) an actual motion vector for block610.

Video compression processes for storage on certain data storage devicessuch as, for example, a digital video disk, may present specialchallenges. On the one hand, advantageously, it may be possible to storea complete sequence of original pixel data in memory prior tocompression for storage on certain data storage devices. On the otherhand, a user viewing video produced by reconstructed pixel data storedon certain data storage devices sometimes may, for example, want toaccess particular frames in the sequence rather than simply view theentire sequence from its beginning (e.g., skip to certain points in themovie rather than watch all of it in its entirety).

Because the time consumed to locate such a particular frame in thesequence may be sufficiently long enough to detract from the enjoymentof the user if locating the particular frame depended upon decodinglarge numbers of previous frames, some technical standards for videocompression prescribe that, periodically in the sequence, frames may beencoded using only spatial compression processes. Such frames may bereferred to as I frames, for example.

To compensate for the loss in compression that occurs from therequirement to use I frames in the sequence, some technical standardsfor video compression allow other frames in the sequence to be encodedusing both spatial and temporal compression processes and allow temporalcompression processes in which a prediction of a current frame may beproduced to use both a previous frame and a subsequent frame. Suchframes may be referred to as B frames, for example. The use of both aprevious frame and a subsequent frame may be possible if the completesequence of original pixel data is stored in memory prior tocompression. Moreover, the use of both a previous frame and a subsequentframe may improve the accuracy of the prediction of a current frame andthus may improve the compression of this frame.

In order to manage a protocol in which a prediction of a current framemay be produced using both a previous frame and a subsequent frame, sometechnical standards for video compression prescribe that, periodicallyin the sequence, frames may be encoded using both spatial and temporalcompression processes, but limit the temporal compression processes tothose in which a prediction of a current frame may be produced usingonly a previous frame. Such frames may be referred to as P frames, forexample. Some technical standards for video compression prescribe thattemporal compression encoding of a P frame may only use a previous Iframe or a previous P frame, and temporal compression encoding of a Bframe may only use: (1) a previous I frame or a previous P frame and (2)a subsequent I frame or a subsequent P frame.

FIG. 8 illustrates an example of an arrangement of I, B, and P frames ina sequence. In FIG. 8, for example, a sequence 800 comprises an I frame802, a B frame 804, a B frame 806, a P frame 808, a B frame 810, a Bframe 812, a P frame 814, a B frame 816, a B frame 818, and an I frame820. P frame 808 may be encoded using previous I frame 802. P frame 814may be encoded using previous P frame 808. B frame 804 may be encodedusing previous I frame 802 and subsequent P frame 808. Likewise, B frame806 may be encoded using previous I frame 802 and subsequent P frame808. B frame 810 may be encoded using previous P frame 808 andsubsequent P frame 814. Likewise, B frame 812 may be encoded usingprevious P frame 808 and subsequent P frame 814. B frame 816 may beencoded using previous P frame 814 and subsequent I frame 820. Likewise,B frame 818 may be encoded using previous P frame 814 and subsequent Iframe 820.

Sequence 800 shows the frames in the order in which they may bepresented, according to their frame numbers. However, in order for thedecoding processes to operate correctly, entropy encoder 310, forexample, may change the order in which data for the frames are placedinto bitstream 322, for example, to: I frame 802, P frame 808, B frame804, B frame 806, P frame 814, B frame 810, B frame 812, I frame 820, Bframe 816, and B frame 818. This order of frames may be set according towhat is known as the picture order count.

As video compression processes have become further refined they haveevolved to include additional degrees of frame divisions, a hierarchy ofprocesses, and protocols that determine which processes may be performedupon which degrees of division.

First, the introduction of the ability to use more than one referencepicture for temporal compression processes may give rise to a need tomanage the various reference pictures. To accomplish this task, sometechnical standards for video compression prescribe that compliantencoders and decoders maintain at least one reference picture list. Withreference to FIG. 3, for example, a reference picture may be producedfrom reconstructed pixel data 330 and stored in buffer 318.

Second, video compression processes have evolved to change having thedetermination of: (1) the types of compression processes and (2) thenumber of reference pictures that may be used from being made for framesto being made for divisions of frames known as slices.

According to some technical standards for video compression, a frame maybe divided into a number of slices ranging from one (i.e., the wholeframe is a slice) to the number of blocks in the frame. Each slice mayhave an arbitrary shape, but each slice contains a whole number ofblocks. FIGS. 9 and 10 illustrate examples of frames divided intoslices.

In FIG. 9, for example, frame 200 may be divided into a slice 902 and aslice 904. Smaller slice 902, for example, may correspond to a portionof current frame 200 in which a location of an object (e.g., baseball202) may be different from the location of the object (e.g., baseball102) in previous frame 100. Larger slice 904, for example, maycorrespond to a portion of current frame 200 in which a location of anobject (e.g., sky 204 and field 206) is the same as or similar to thelocation of the object (e.g., sky 104 and field 106) in previous frame100.

The blocks from which the slices are formed may not need to becontiguous. In FIG. 10, for example, frame 200 has four slices denotedby patterns in the blocks. Using the key in FIG. 10, for example, frame200 has a slice 1002, a slice 1004, a slice 1006, and a slice 1008.

With the introduction of slices, it may be possible to change having thedetermination of: (1) the types of compression processes and (2) thenumber of reference pictures that may be used from being made for framesto being made for slices. So, according to some technical standards forvideo compression, rather than using I frames, B frames, and P frames,for example, I slices, B slices, and P slices may be used. Moreover,some technical standards for video compression prescribe that an I slicemay contain only I blocks; a B slice may contain I blocks, B blocks, orboth; and a P slice may contain I blocks, P blocks, or both.

Third, although the block may remain the basic unit upon which spatialcompression processes are performed, according to some technicalstandards for video compression, temporal compression processes may nowbe performed on partitions of the block.

Fourth, contrary to the scheme presented above with respect to FIG. 8,according to some technical standards for video compression, thedistinction between a P block and a B block may not depend upon thenumber of reference pictures from which the block may be encoded, butrather may depend upon the number of reference picture lists from whicha reference picture may be selected to encode the block.

For example, a P block may be encoded using a reference picture selectedfrom only one reference picture list. The P slice that includes the Pblock may be configured to be encoded using only one reference picturelist. For a P block, the reference picture list may include a finitenumber of reference pictures. The motion compensator (motion compensator302, for example) may choose a best match, for example, among thereference pictures on the reference picture list. When a referencepicture is produced, it may be considered for inclusion on the referencepicture list. Because reference pictures may be produced according totheir picture order numbers rather than their frame numbers, it may bethe case that the reference picture corresponds to a previous frame or asubsequent frame. This is contrary to the limitation with respect to Pframes presented above with respect to FIG. 8 in which only previousframes were used. Generally, reference pictures included on thereference picture list may be ordered according to their frame numbers.The position of each reference picture on the reference picture list maybe tracked by an index number such that the reference picture with thehighest frame number has the lowest index number. Reference pictureswith progressively lower frame numbers may have progressively higherindex numbers. If the reference list includes its maximum number ofreference pictures and a new reference picture is to be added, thereference picture currently on the reference list and having the lowestframe number may be removed so that the new reference picture may beadded.

For example, a B block may be encoded using a reference picture selectedfrom one or two reference picture lists. The B slice that includes the Bblock may be configured to be encoded using two reference picture lists.Generally, reference pictures included on the reference picture listsmay be ordered according to their picture order count. All referencepictures in the buffer (buffer 318, for example) are included on bothreference picture lists, but a distinction may be made between thosereference pictures in the buffer that have a picture order count that islower than the picture order count of the current frame and thosereference pictures in the buffer that have a picture order count that ishigher than the picture order count of the current frame.

On a first reference picture list, those reference pictures in thebuffer that have a picture order count that is lower than the pictureorder count of the current frame may be tracked by an index number suchthat the reference picture with the highest picture order count has thelowest index number. Reference pictures with progressively lower pictureorder counts may have progressively higher index numbers. Once thereference pictures in the buffer that have a picture order count that islower than the picture order count of the current frame have beenordered on the first reference picture list, the reference pictures inthe buffer that have a picture order count that is higher than thepicture order count of the current frame may be added so that referencepictures with progressively higher picture order counts haveprogressively higher index numbers.

On a second reference picture list, those reference pictures in thebuffer that have a picture order count that is higher than the pictureorder count of the current frame may be tracked by an index number suchthat the reference picture with the lowest picture order count has thelowest index number. Reference pictures with progressively higherpicture order counts have progressively higher index numbers. Once thereference pictures in the buffer that have a picture order count that ishigher than the picture order count of the current frame have beenordered on the second reference picture list, the reference pictures inthe buffer that have a picture order count that is lower than thepicture order count of the current frame may be added so that referencepictures with progressively lower picture order counts haveprogressively higher index numbers.

For a B block, the motion compensator (motion compensator 302, forexample) may choose a best match, for example, among the referencepictures on both reference picture lists. The motion compensator maychoose to use one or two reference pictures. This is contrary to thelimitation with respect to B frames presented above with respect to FIG.8 in which two reference pictures were used. If the motion compensatorchooses to use two reference pictures, one must be selected from thefirst reference picture list and the other must be selected from thesecond reference picture list.

Because reference pictures may be produced according to their pictureorder numbers rather than their frame numbers, it may be the case thatboth reference pictures correspond to previous frames or both referencepictures correspond to subsequent frames. This is contrary to thelimitation with respect to B frames presented above with respect to FIG.8 in which both a previous frame and a subsequent frame were used.

In order to reduce the number of bits in the bitstream, some technicalstandards for video compression may provide for default processes to beperformed by decoders compliant with the technical standard in theabsence of binary codes directing different processes. For example,according to some technical standards for video compression, if theentropy encoder (entropy encoder 302, for example) does not transmit adifference motion vector for a current block in the bitstream, thedecoder may, by default, use the predicted motion vector for the currentblock, which may be derived from at least one actual motion vector of atleast one received previously encoded block that may be nearby thecurrent block.

According to some technical standards for video compression, forexample, for a B block, a direct mode is available in which the entropyencoder (entropy encoder 302, for example) does not transmit adifference motion vector for a current B block in the bitstream, and thedecoder may, by default, use the predicted motion vector for the currentblock, which may be derived from at least one actual motion vector of atleast one received previously encoded block that is nearby the currentblock.

Additionally, according to some technical standards for videocompression, decoders, by default and in the absence of binary codesdirecting different processes, may perform temporal compressionprocesses on unpartitioned blocks rather than partitions of the blocks.

Sometimes it may be possible for the entropy encoder to include in thebitstream a binary code that indicates that all other data associatedwith a block have been excluded from the bitstream. Such a block may beknown as a skipped block. In transmitting a skipped block, an encodermay be exploiting the default processes to be performed by a decoder inorder to reduce the number of bits in the bitstream. For this reason,the ability to assess a block candidate for conversion to a skippedblock may be useful.

FIG. 11 is a process flowchart of an example method for assessing asequence of encoded data associated with a block of video, according toan embodiment. The block may be a macroblock. A method 1100 in FIG. 11may be performed using at least one electronic processing system thatoperates hardware, software, firmware, or some combination of these.

In method 1100, at 1102, the at least one electronic processing systemmay determine if quantized coefficients of transformed residual pixeldata associated with the block are equal to zero. According to sometechnical standards for video compression, the quantized coefficients oftransformed residual pixel data associated with the block may bedetermined to be equal to zero by determining the value of a binary codein the sequence of encoded data. In the Advanced Video Coding standard,for example, the quantized coefficients of transformed residual pixeldata associated with the block may be determined to be equal to zero bydetermining the value of the binary code “coded_block_pattern.”

At 1104, the at least one electronic processing system may determine ifthe block was encoded using a temporal compression process. Such a blockmay be, for example, a P block or a B block. According to some technicalstandards for video compression, the block may be determined to havebeen encoded using a temporal compression process by determining thevalue of a binary code in the sequence of encoded data. In the AdvancedVideo Coding standard, for example, the block may be determined to havebeen encoded using a temporal compression process by determining thevalue of the binary code “mb_type.”

At 1106, the at least one electronic processing system may determine ifa slice that includes the block is configured to be encoded using onlyone reference picture list. Such a slice may be, for example, a P slice.The slice may be a frame. The slice may be a field. According to sometechnical standards for video compression, the slice that includes theblock may be determined to have been configured to be encoded using onlyone reference picture list by determining the value of a binary code inthe sequence of encoded data. In the Advanced Video Coding standard, forexample, the slice that includes the block may be determined to havebeen configured to be encoded using only one reference picture list bydetermining the value of the binary code “slice_type.”

At 1108, the at least one electronic processing system may determine ifthe block is unpartitioned. According to some technical standards forvideo compression, the block may be determined to be unpartitioned bydetermining the value of a binary code in the sequence of encoded data.In the Advanced Video Coding standard, for example, the block may bedetermined to be unpartitioned by determining the value of the binarycode “mb_type.”

At 1110, the at least one electronic processing system may determine ifa reference picture used to encode the block is the reference picturemost recently added to the one reference picture list. According to sometechnical standards for video compression, the reference picture mostrecently added to the one reference picture list may be the referencepicture associated with the lowest index value on the one referencepicture list. According to some technical standards for videocompression, a reference picture used to encode the block may bedetermined to be the reference picture with the lowest index value onthe one reference picture list by determining the value of a binary codein the sequence of encoded data. In the Advanced Video Coding standard,for example, a reference picture used to encode the block may bedetermined to be the reference picture associated with the lowest indexvalue on the one reference picture list by determining the value of thebinary code “ref_idx_(—)10.”

At 1112, the at least one electronic processing system may determine ifan actual motion vector associated with the block is equal to apredicted motion vector associated with the block.

If the results of method 1100 indicate that the block is a successfulcandidate, then the sequence of encoded data may be changed to indicatethat the block is a skipped block.

Optionally, according to some technical standards for video compression,the at least one electronic processing system may increment a value of abinary code in the sequence of encoded data. The binary code mayindicate a consecutive number of blocks whose data are excluded from thesequence of encoded data. In the Advanced Video Coding standard, forexample, incrementing a value of the binary code “mb_skip_run” indicatesthat the block is one of what may be a consecutive number of skippedblocks.

Alternatively, optionally, according to some technical standards forvideo compression, the at least one electronic processing system maychange a value of a binary code in the sequence of encoded data. Thebinary code may be associated with the block and may indicate that otherdata associated with the block are excluded from the sequence of encodeddata. In the Advanced Video Coding standard, for example, changing thevalue of the binary code “mb_skip_flag” indicates that the block is askipped block.

FIG. 12 is a block diagram of an example system for assessing a sequenceof encoded data associated with a block of video, according to anembodiment. In FIG. 12, a system 1200 includes, for example, a firstelectronic processing system 1202, a second electronic processing system1204, a third electronic processing system 1206, a fourth electronicprocessing system 1208, a fifth electronic processing system 1210, asixth electronic processing system 1212, and a memory 1214. Optionally,system 1200 may also include a seventh electronic processing system1216. Optionally, the functions of first 1202, second 1204, third 1206,fourth 1208, fifth 1210, sixth 1212, and seventh 1216 electronicprocessing systems may be performed by a single electronic processingsystem.

First electronic processing system 1202 may be configured to determineif quantized coefficients of transformed residual pixel data associatedwith the block are equal to zero. According to some technical standardsfor video compression, the quantized coefficients of transformedresidual pixel data associated with the block may be determined to beequal to zero by determining the value of a binary code in sequence 328of encoded data. In the Advanced Video Coding standard, for example, thequantized coefficients of transformed residual pixel data associatedwith the block may be determined to be equal to zero by determining thevalue of the binary code “coded_block_pattern.”

Second electronic processing system 1204 may be configured to determineif the block was encoded using a temporal compression process. Accordingto some technical standards for video compression, the block may bedetermined to have been encoded using a temporal compression process bydetermining the value of a binary code in sequence 328 of encoded data.In the Advanced Video Coding standard, for example, the block may bedetermined to have been encoded using a temporal compression process bydetermining the value of the binary code “mb_type.”

Third electronic processing system 1206 may be configured to determineif a slice that includes the block is configured to be encoded usingonly one reference picture list. Such a slice may be, for example, a Pslice. The slice may be a frame. The slice may be a field. According tosome technical standards for video compression, the slice that includesthe block may be determined to have been configured to be encoded usingonly one reference picture list by determining the value of a binarycode in sequence 328 of encoded data. In the Advanced Video Codingstandard, for example, the slice that includes the block may bedetermined to have been configured to be encoded using only onereference picture list by determining the value of the binary code“slice_type.”

Fourth electronic processing system 1208 may be configured to determineif the block is unpartitioned. According to some technical standards forvideo compression, the block may be determined to be unpartitioned bydetermining the value of a binary code in sequence 328 of encoded data.In the Advanced Video Coding standard, for example, the block may bedetermined to be unpartitioned by determining the value of the binarycode “mb_type.” Because according to some technical standards for videocompression the same binary code that may be used to determine if theblock was encoded using a temporal compression process may also be usedto determine if the block is unpartitioned, the functions of secondelectronic processing system 1204 and fourth electronic processingsystem 1208 optionally may be performed by a single electronicprocessing system.

Fifth electronic processing system 1210 may be configured to determineif a reference picture used to encode the block is the reference picturemost recently added to the one reference picture list. According to sometechnical standards for video compression, the reference picture mostrecently added to the one reference picture list may be the referencepicture associated with the lowest index value on the one referencepicture list. According to some technical standards for videocompression, a reference picture used to encode the block may bedetermined to be the reference picture associated with the lowest indexvalue on the one reference picture list by determining the value of abinary code in sequence 328 of encoded data. In the Advanced VideoCoding standard, for example, a reference picture used to encode theblock may be determined to be the reference picture associated with thelowest index value on the one reference picture list by determining thevalue of the binary code “ref_idx_(—)10.”

Sixth electronic processing system 1212 may be configured to determineif an actual motion vector associated with the block is equal to apredicted motion vector associated with the block. In system 1200, forexample, the predicted motion vector associated with the block may bestored in memory 1214. Sixth electronic processing system 1212 may beconfigured to receive the predicted motion vector associated with theblock from memory 1214 and to receive, for example, actual motion vector326 from motion compensator 302. Sixth electronic processing system 1212may be configured to compare, for example, actual motion vector 326associated with the block with the predicted motion vector associatedwith the block to determine if they are equal.

Optionally, seventh electronic processing system 1216 may be configuredto determine if the block is a successful candidate for conversion to askipped block and, if so, to change sequence 328 of encoded data toproduce bitstream 322. Optionally, seventh electronic processing system1214 may increment a value of a binary code in the sequence of encodeddata. The binary code may indicate a consecutive number of blocks whosedata are excluded from the sequence of encoded data. In the AdvancedVideo Coding standard, for example, incrementing a value of the binarycode “mb_skip_run” indicates that the block is one of what may be aconsecutive number of skipped blocks. Alternatively, optionally, seventhelectronic processing system 1216 may change a value of a binary code inthe sequence of encoded data. The binary code may be associated with theblock and may indicate that other data associated with the block areexcluded from the sequence of encoded data. In the Advanced Video Codingstandard, for example, changing the value of the binary code“mb_skip_flag” indicates that the block is a skipped block.

FIG. 13 is a block diagram of an example of a software or firmwareembodiment of system 1200, according to an embodiment. In FIG. 13, anelectronic processing system 1300 includes, for example, one or moreprogrammable processor(s) 1302, a memory 1304, a computer program logic1306, one or more I/O ports and/or I/O devices 1308, quantizedcoefficients determination logic 1310, temporal compressiondetermination logic 1312, slice determination logic 1314, block modedetermination logic 1316, reference picture determination logic 1318,and motion vector comparison logic 1320. Optionally, electronicprocessing system 1300 also includes skipped block determination logic1322.

One or more programmable processor(s) 1302 may be configured to executethe functionality of system 1200 as described above. Programmableprocessor(s) 1302 may include a central processing unit (CPU) and/or agraphics processing unit (GPU). Memory 1304 may include one or morecomputer readable media that may store computer program logic 1306.Memory 1304 may be implemented as a hard disk and drive, a removablemedia such as a compact disk, a read-only memory (ROM) or random accessmemory (RAM) device, for example, or some combination thereof.Programmable processor(s) 1302 and memory 1304 may be in communicationusing any of several technologies known to one of ordinary skill in theart, such as a bus. Computer program logic 1306 contained in memory 1304may be read and executed by programmable processor(s) 1302. The one ormore I/O ports and/or I/O devices 1308, may also be connected toprocessor(s) 1302 and memory 1304.

In the embodiment of FIG. 13, computer program logic 1306 may includequantized coefficients determination logic 1310, which may be configuredto receive data values related to quantized coefficients of transformedresidual pixel data associated with the block and to determine if theyare equal to zero. Computer program logic 1306 may also include temporalcompression determination logic 1312, which may be configured to receivedata values related to the method of compression of the block and todetermine if the block was encoded using a temporal compression process.Computer program logic 1306 may also include slice determination logic1314, which may be configured to receive data values related to themethod of compression of the slice that includes the block and todetermine if the slice is configured to be encoded using only onereference picture list. Computer program logic 1306 may also includeblock mode determination logic 1316, which may be configured to receivedata values related to the mode of the block and to determine if theblock is unpartitioned. Computer program logic 1306 may also includereference picture determination logic 1318, which may be configured toreceive data values related to the reference picture used to encode theblock and to determine if the reference picture used to encode the blockis the reference picture most recently added to the one referencepicture list. Computer program logic 1306 may also include motion vectorcomparison logic 1320, which may be configured to receive data valuesrelated to an actual motion vector associated with the block and apredicted motion vector associated with the block and to determine ifthey are equal.

Optionally, computer program logic 1306 may also include skipped blockdetermination logic 1322, which may be configured to receive data valuesfrom quantized coefficients determination logic 1310, temporalcompression determination logic 1312, slice determination logic 1314,block mode determination logic 1316, reference picture determinationlogic 1318, and motion vector comparison logic 1320, to determine if theblock is a successful candidate for conversion to a skipped block, and,if so, to send a signal to change sequence 328 of encoded data toproduce bitstream 322. Optionally, skipped block determination logic1322 may send a signal to increment a value of a binary code in thesequence of encoded data. The binary code may indicate a consecutivenumber of blocks whose data are excluded from the sequence of encodeddata. Alternatively, optionally, skipped block determination logic 1322may send a signal to change a value of a binary code in the sequence ofencoded data. The binary code may be associated with the block and mayindicate that other data associated with the block are excluded from thesequence of encoded data.

FIG. 14 is a process flowchart of an example method for assessing asequence of encoded data associated with a block of video, according toan embodiment. The block may be a macroblock. A method 1400 in FIG. 14may be performed using at least one electronic processing system thatoperates hardware, software, firmware, or some combination of these.

In method 1400, at 1402, the at least one electronic processing systemmay determine if quantized coefficients of transformed residual pixeldata associated with the block are equal to zero. According to sometechnical standards for video compression, the quantized coefficients oftransformed residual pixel data associated with the block may bedetermined to be equal to zero by determining the value of a binary codein the sequence of encoded data. In the Advanced Video Coding standard,for example, the quantized coefficients of transformed residual pixeldata associated with the block may be determined to be equal to zero bydetermining the value of the binary code “coded_block_pattern.”

At 1404, the at least one electronic processing system may determine ifthe block was encoded using a temporal compression process. Such a blockmay be, for example, a P block or a B block. According to some technicalstandards for video compression, the block may be determined to havebeen encoded using a temporal compression process by determining thevalue of a binary code in the sequence of encoded data. In the AdvancedVideo Coding standard, for example, the block may be determined to havebeen encoded using a temporal compression process by determining thevalue of the binary code “mb_type.”

At 1406, the at least one electronic processing system may determine ifa slice that includes the block is configured to be encoded using tworeference picture lists. Such a slice may be, for example, a B slice.The slice may be a frame. The slice may be a field. According to sometechnical standards for video compression, the slice that includes theblock may be determined to have been configured to be encoded using tworeference picture lists by determining the value of a binary code in thesequence of encoded data. In the Advanced Video Coding standard, forexample, the slice that includes the block may be determined to havebeen configured to be encoded using two reference picture lists bydetermining the value of the binary code “slice_type.”

At 1408, the at least one electronic processing system may determine ifthe block was encoded in direct mode. According to some technicalstandards for video compression, the block may be determined to havebeen encoded in direct mode by determining the value of a binary code inthe sequence of encoded data. In the Advanced Video Coding standard, forexample, the block may be determined to have been encoded in direct modeby determining the value of the binary code “mb_type.”

If the results of method 1400 indicate that the block is a successfulcandidate, then the sequence of encoded data may be changed to indicatethat the block is a skipped block.

Optionally, according to some technical standards for video compression,the at least one electronic processing system may increment a value of abinary code in the sequence of encoded data. The binary code mayindicate a consecutive number of blocks whose data are excluded from thesequence of encoded data. In the Advanced Video Coding standard, forexample, incrementing a value of the binary code “mb_skip_run” indicatesthat the block is one of what may be a consecutive number of skippedblocks.

Alternatively, optionally, according to some technical standards forvideo compression, the at least one electronic processing system maychange a value of a binary code in the sequence of encoded data. Thebinary code may be associated with the block and may indicate that otherdata associated with the block are excluded from the sequence of encodeddata. In the Advanced Video Coding standard, for example, changing thevalue of the binary code “mb_skip_flag” indicates that the block is askipped block.

FIG. 15 is a block diagram of an example system for assessing a sequenceof encoded data associated with a block of video, according to anembodiment. In FIG. 15, a system 1500 includes, for example, a firstelectronic processing system 1502, a second electronic processing system1504, a third electronic processing system 1506, and a fourth electronicprocessing system 1508. Optionally, system 1500 may also include a fifthelectronic processing system 1510. Optionally, the functions of first1502, second 1504, third 1506, fourth 1508, and fifth 1510 electronicprocessing systems may be performed by a single electronic processingsystem.

First electronic processing system 1502 may be configured to determineif quantized coefficients of transformed residual pixel data associatedwith the block are equal to zero. According to some technical standardsfor video compression, the quantized coefficients of transformedresidual pixel data associated with the block may be determined to beequal to zero by determining the value of a binary code in sequence 328of encoded data. In the Advanced Video Coding standard, for example, thequantized coefficients of transformed residual pixel data associatedwith the block may be determined to be equal to zero by determining thevalue of the binary code “coded_block_pattern.”

Second electronic processing system 1504 may be configured to determineif the block was encoded using a temporal compression process. Accordingto some technical standards for video compression, the block may bedetermined to have been encoded using a temporal compression process bydetermining the value of a binary code in sequence 328 of encoded data.In the Advanced Video Coding standard, for example, the block may bedetermined to have been encoded using a temporal compression process bydetermining the value of the binary code “mb_type.”

Third electronic processing system 1506 may be configured to determineif a slice that includes the block is configured to be encoded using tworeference picture lists. Such a slice may be, for example, a B slice.The slice may be a frame. The slice may be a field. According to sometechnical standards for video compression, the slice that includes theblock may be determined to have been configured to be encoded using tworeference picture lists by determining the value of a binary code insequence 328 of encoded data. In the Advanced Video Coding standard, forexample, the slice that includes the block may be determined to havebeen configured to be encoded using two reference picture lists bydetermining the value of the binary code “slice_type.”

Fourth electronic processing system 1508 may be configured to determineif the block was encoded in direct mode. According to some technicalstandards for video compression, the block may be determined to havebeen encoded in direct mode by determining the value of a binary code insequence 328 of encoded data. In the Advanced Video Coding standard, forexample, the block may be determined to have been encoded in direct modeby determining the value of the binary code “mb_type.” Because accordingto some technical standards for video compression the same binary codethat may be used to determine if the block was encoded using a temporalcompression process may also be used to determine if the block wasencoded in direct mode, the functions of second electronic processingsystem 1504 and fourth electronic processing system 1508 optionally maybe performed by a single electronic processing system.

Optionally, fifth electronic processing system 1510 may be configured todetermine if the block is a successful candidate for conversion to askipped block and, if so, to change sequence 328 of encoded data toproduce bitstream 322. Optionally, fifth electronic processing system1510 may increment a value of a binary code in the sequence of encodeddata. The binary code may indicate a consecutive number of blocks whosedata are excluded from the sequence of encoded data. In the AdvancedVideo Coding standard, for example, incrementing a value of the binarycode “mb_skip_run” indicates that the block is one of what may be aconsecutive number of skipped blocks. Alternatively, optionally, fifthelectronic processing system 1510 may change a value of a binary code inthe sequence of encoded data. The binary code may be associated with theblock and may indicate that other data associated with the block areexcluded from the sequence of encoded data. In the Advanced Video Codingstandard, for example, changing the value of the binary code“mb_skip_flag” indicates that the block is a skipped block.

FIG. 16 is a block diagram of an example of a software or firmwareembodiment of system 1500, according to an embodiment. In FIG. 16, anelectronic processing system 1600 includes, for example, one or moreprogrammable processor(s) 1602, a memory 1604, a computer program logic1606, one or more I/O ports and/or I/O devices 1608, quantizedcoefficients determination logic 1610, temporal compressiondetermination logic 1612, slice determination logic 1614, and block modedetermination logic 1616. Optionally, electronic processing system 1600also includes skipped block determination logic 1618.

One or more programmable processor(s) 1602 may be configured to executethe functionality of system 1500 as described above. Programmableprocessor(s) 1602 may include a central processing unit (CPU) and/or agraphics processing unit (GPU). Memory 1604 may include one or morecomputer readable media that may store computer program logic 1606.Memory 1604 may be implemented as a hard disk and drive, a removablemedia such as a compact disk, a read-only memory (ROM) or random accessmemory (RAM) device, for example, or some combination thereof.Programmable processor(s) 1602 and memory 1604 may be in communicationusing any of several technologies known to one of ordinary skill in theart, such as a bus. Computer program logic 1606 contained in memory 1604may be read and executed by programmable processor(s) 1602. The one ormore I/O ports and/or I/O devices 1608, may also be connected toprocessor(s) 1302 and memory 1604.

In the embodiment of FIG. 16, computer program logic 1606 may includequantized coefficients determination logic 1610, which may be configuredto receive data values related to quantized coefficients of transformedresidual pixel data associated with the block and to determine if theyare equal to zero. Computer program logic 1606 may also include temporalcompression determination logic 1312, which may be configured to receivedata values related to the method of compression of the block and todetermine if the block was encoded using a temporal compression process.Computer program logic 1606 may also include slice determination logic1614, which may be configured to receive data values related to themethod of compression of the slice that includes the block and todetermine if the slice is configured to be encoded using two referencepicture lists. Computer program logic 1606 may also include block modedetermination logic 1616, which may be configured to receive data valuesrelated to the mode of the block and to determine if the block wasencoded in direct mode.

Optionally, computer program logic 1606 may also include skipped blockdetermination logic 1618, which may be configured to receive data valuesfrom quantized coefficients determination logic 1610, temporalcompression determination logic 1612, slice determination logic 1614,and block mode determination logic 1616, to determine if the block is asuccessful candidate for conversion to a skipped block, and, if so, tosend a signal to change sequence 328 of encoded data to producebitstream 322. Optionally, skipped block determination logic 1618 maysend a signal to increment a value of a binary code in the sequence ofencoded data. The binary code may indicate a consecutive number ofblocks whose data are excluded from the sequence of encoded data.Alternatively, optionally, skipped block determination logic 1618 maysend a signal to change a value of a binary code in the sequence ofencoded data. The binary code may be associated with the block and mayindicate that other data associated with the block are excluded from thesequence of encoded data.

Methods 1100 and 1400 and systems 1200, 1300, 1500, and 1600 may beimplemented in hardware, software, firmware, or some combination ofthese including, for example, second generation Intel® Core™ iprocessors i3/i5/i7 that include Intel® Quick Sync Video technology.

In embodiments, methods 1100 and 1400 and systems 1200, 1300, 1500, and1600 may be implemented as part of a wired communication system, awireless communication system, or a combination of both. In embodiments,for example, methods 1100 and 1400 and systems 1200, 1300, 1500, and1600 may be implemented in a mobile computing device having wirelesscapabilities. A mobile computing device may refer to any device havingan electronic processing system and a mobile power source or supply,such as one or more batteries, for example.

Examples of a mobile computing device may include a laptop computer,ultra-mobile personal computer, portable computer, handheld computer,palmtop computer, personal digital assistant (PDA), cellular telephone,combination cellular telephone/PDA, smart phone, pager, one-way pager,two-way pager, messaging device, data communication device, mobileInternet device, MP3 player, and so forth.

In embodiments, for example, a mobile computing device may beimplemented as a smart phone capable of executing computer applications,as well as voice communications and/or data communications. Althoughsome embodiments may be described with a mobile computing deviceimplemented as a smart phone by way of example, it may be appreciatedthat other embodiments may be implemented using other wireless mobilecomputing devices as well. The embodiments are not limited in thiscontext.

Methods and systems are disclosed herein with the aid of functionalbuilding blocks illustrating the functions, features, and relationshipsthereof. At least some of the boundaries of these functional buildingblocks have been arbitrarily defined herein for the convenience of thedescription. Alternate boundaries may be defined so long as thespecified functions and relationships thereof are appropriatelyperformed.

One or more features disclosed herein may be implemented in hardware,software, firmware, and combinations thereof, including discrete andintegrated circuit logic, application specific integrated circuit (ASIC)logic, and microcontrollers, and may be implemented as part of adomain-specific integrated circuit package, or a combination ofintegrated circuit packages. The term software, as used herein, refersto a computer program product including a computer readable mediumhaving computer program logic stored therein to cause a computer systemto perform one or more features and/or combinations of featuresdisclosed herein. The computer readable medium may be transitory ornon-transitory. An example of a transitory computer readable medium maybe a digital signal transmitted over a radio frequency or over anelectrical conductor, through a local or wide area network, or through anetwork such as the Internet. An example of a non-transitory computerreadable medium may be a compact disk, a flash memory, or other datastorage device.

While various embodiments are disclosed herein, it should be understoodthat they have been presented by way of example only, and notlimitation. It will be apparent to persons skilled in the relevant artthat various changes in form and detail may be made therein withoutdeparting from the spirit and scope of the methods and systems disclosedherein. Thus, the breadth and scope of the claims should not be limitedby any of the exemplary embodiments disclosed herein.

What is claimed is:
 1. A method for assessing a sequence of encoded dataassociated with a block of video, comprising: determining, via at leastone electronic processing system, if quantized coefficients oftransformed residual pixel data associated with the block are equal tozero; determining, via the at least one electronic processing system, ifthe block was encoded using a temporal compression process; determining,via the at least one electronic processing system, if a slice thatincludes the block is configured to be encoded using only one referencepicture list; determining, via the at least one electronic processingsystem, if the block is unpartitioned; determining if a referencepicture used to encode the block is the reference picture associatedwith a lowest index value on the one reference picture list; anddetermining, via the at least one electronic processing system, if anactual motion vector associated with the block is equal to a predictedmotion vector associated with the block.
 2. The method of claim 1,wherein the block is a macroblock.
 3. The method of claim 1, wherein theslice is a frame.
 4. The method of claim 1, wherein the slice is afield.
 5. The method of claim 1, wherein the determining if thequantized coefficients of transformed residual pixel data associatedwith the block are equal to zero comprises determining a value of abinary code in the sequence of encoded data.
 6. The method of claim 1,wherein the determining if the block was encoded using the temporalcompression process comprises determining a value of a binary code inthe sequence of encoded data.
 7. The method of claim 1, wherein thedetermining if the slice that includes the block is configured to beencoded using only the one reference picture list comprises determininga value of a binary code in the sequence of encoded data.
 8. The methodof claim 1, wherein the determining if the block is unpartitionedcomprises determining a value of a binary code in the sequence ofencoded data.
 9. The method of claim 1, further comprising:incrementing, via the at least one electronic processing system, a valueof a binary code in the sequence of encoded data, wherein the binarycode indicates a consecutive number of blocks whose data are excludedfrom the sequence of encoded data.
 10. The method of claim 1, furthercomprising: changing, via the at least one electronic processing system,a value of a binary code in the sequence of encoded data, wherein thebinary code is associated with the block and indicates that other dataassociated with the block are excluded from the sequence of encodeddata.
 11. A system for assessing a sequence of encoded data associatedwith a block of video, comprising: a first electronic processing systemconfigured to determine if quantized coefficients of transformedresidual pixel data associated with the block are equal to zero; asecond electronic processing system configured to determine if the blockwas encoded using a temporal compression process; a third electronicprocessing system configured to determine if a slice that includes theblock is configured to be encoded using only one reference picture list;a fourth electronic processing system configured to determine if theblock is unpartitioned; a fifth electronic processing system configuredto determine if a reference picture used to encode the block is thereference picture associated with a lowest index value on the onereference picture list; and a sixth electronic processing systemconfigured to determine if an actual motion vector associated with theblock is equal to a predicted motion vector associated with the block.12. The system of claim 11, wherein the second electronic processingsystem is the fourth electronic processing system.
 13. The system ofclaim 11, further comprising a seventh electronic processing systemconfigured to increment a value of a binary code in the sequence ofencoded data, wherein the binary code indicates a consecutive number ofblocks whose data are excluded from the sequence of encoded data. 14.The system of claim 11, further comprising a seventh electronicprocessing system configured to change a value of a binary code in thesequence of encoded data, wherein the binary code is associated with theblock and indicates that other data associated with the block areexcluded from the sequence of encoded data.
 15. A non-transitorymachine-readable medium storing instructions which, when executed by atleast one electronic processing system, cause the processing system toperform instructions for: determining if quantized coefficients oftransformed residual pixel data associated with the block are equal tozero; determining if the block was encoded using a temporal compressionprocess; determining if a slice that includes the block is configured tobe encoded using only one reference picture list; determining if theblock is unpartitioned; determining if a reference picture used toencode the block is the reference picture associated with a lowest indexvalue on the one reference picture list; and determining if an actualmotion vector associated with the block is equal to a predicted motionvector associated with the block.
 16. A method for assessing a sequenceof encoded data associated with a block of video, comprising:determining, via at least one electronic processing system, if quantizedcoefficients of transformed residual pixel data associated with theblock are equal to zero; determining, via the at least one electronicprocessing system, if the block was encoded using a temporal compressionprocess; determining, via the at least one electronic processing system,if a slice that includes the block is configured to be encoded using tworeference picture lists; and determining, via the at least oneelectronic processing system, if the block was encoded in direct mode.17. The method of claim 16, wherein the block is a macroblock.
 18. Themethod of claim 16, wherein the slice is a frame.
 19. The method ofclaim 16, wherein the slice is a field.
 20. The method of claim 16,wherein the determining if the quantized coefficients of transformedresidual pixel data associated with the block are equal to zerocomprises determining a value of a binary code in the sequence ofencoded data.
 21. The method of claim 16, wherein the determining if theblock was encoded using the temporal compression process comprisesdetermining a value of a binary code in the sequence of encoded data.22. The method of claim 16, wherein the determining if the slice thatincludes the block is configured to be encoded using the two referencepicture lists comprises determining a value of a binary code in thesequence of encoded data.
 23. The method of claim 16, wherein thedetermining if the block was encoded in direct mode comprisesdetermining a value of a binary code in the sequence of encoded data.24. The method of claim 16, further comprising: incrementing, via the atleast one electronic processing system, a value of a binary code in thesequence of encoded data, wherein the binary code indicates aconsecutive number of blocks whose data are excluded from the sequenceof encoded data.
 25. The method of claim 16, further comprising:changing, via the at least one electronic processing system, a value ofa binary code in the sequence of encoded data, wherein the binary codeis associated with the block and indicates that other data associatedwith the block are excluded from the sequence of encoded data.
 26. Asystem for assessing a sequence of encoded data associated with a blockof video, comprising: a first electronic processing system configured todetermine if quantized coefficients of transformed residual pixel dataassociated with the block are equal to zero; a second electronicprocessing system configured to determine if the block was encoded usinga temporal compression process; a third electronic processing systemconfigured to determine if a slice that includes the block is configuredto be encoded using two reference picture lists; and a fourth electronicprocessing system configured to determine if the block was encoded indirect mode.
 27. The system of claim 26, wherein the second electronicprocessing system is the fourth electronic processing system.
 28. Thesystem of claim 26, further comprising a fifth electronic processingsystem configured to increment a value of a binary code in the sequenceof encoded data, wherein the binary code indicates a consecutive numberof blocks whose data are excluded from the sequence of encoded data. 29.The system of claim 26, further comprising a fifth electronic processingsystem configured to change a value of a binary code in the sequence ofencoded data, wherein the binary code is associated with the block andindicates that other data associated with the block are excluded fromthe sequence of encoded data.
 30. A non-transitory machine-readablemedium storing instructions which, when executed by at least oneelectronic processing system, cause the processing system to performinstructions for: determining if quantized coefficients of transformedresidual pixel data associated with the block are equal to zero;determining if the block was encoded using a temporal compressionprocess; determining if a slice that includes the block is configured tobe encoded using two reference picture lists; and determining if theblock was encoded in direct mode.